MenuMeters FAQ
Version 1.2, Copyright © 2002-2004 Alex Harper (basilisk@foobox.net)

Contents:

• This is a hack! Its using undocumented Apple APIs! Aren't you behaving badly?
• Why does  the CPU meter User/System percentage display sometimes seem lower than the CPU graph/thermometer?
• Why is the CPU temperature display not supported on my machine?
• How do I tell how much CPU time MenuMeters itself is using? How can I decrease its CPU usage?
• The Net Meter shows interfaces I never use. How do I disable them?
• Open source?

Q:	This is a hack! Its using undocumented Apple APIs! Aren't you behaving badly?

A:	Guilty as charged. Its important to note, however, that the only undocumented API used in MenuMeters is the menu extra API itself. The routines used to gather the resource information (host_statistics, sysctl, and IOKit) are all documented.

As for the menu extra API itself... I think the benefits outweigh the risk. Certainly it is possible for a misbehaving menu extra to crash the SystemUIServer. Since SystemUIServer restarts itself, a crash is not the end of the world. Hopefully in some future system release Apple will introduce an public API that is comparable to the menu extra API. I'll happily port to that API when that day comes. In the meantime I wrote what I wanted. That said, if you are the kind of person who avoids all software that goes outside the Apple guidelines, then MenuMeters is not for you. Numerous alternatives exist, and a search on any Macintosh software site should be your next step.

Q:	Why does  the CPU meter User/System percentage display sometimes seem lower than the CPU graph/thermometer?

A:	As of version 1.0 MenuMeters counts the load of "nice'd" processes separately from user or system load. The "nice" value is displayed with its own color in the graph and thermometer displays. However, when displaying the separated user and system percentages there simply isn't room to add a third number for the "nice" percentage. Instead MenuMeters uses the same method as Darwin's "top" command and calculates user and system load excluding the "nice" processes. Generally this results in a reading that reasonably matches the graph or thermometer value, however in some instances, especially on systems with large background "nice" processes like Seti@Home or Folding@Home the values may not always line up closely. Since "top" exhibits the same behavior this is not considered a bug.

Q:	Why is the CPU temperature display not supported on my machine?

A:	CPU temperature (thermal register) support is limited to processors  and versions of MacOS X which support the sensor. Although earlier versions of MacOS X supported temperature readings on some G3 and G4 models, kernel support for this functionality was removed in 10.3.5. If you use MacOS X 10.3.5 or later MenuMeters will not display CPU temperature readings.

Support for fan control sensors (post-2003 G4 and G5 machines) will be added to MenuMeters in a future release.

Q:	How do I tell how much CPU time MenuMeters itself is using? How can I decrease its CPU usage?

A:	The MenuMeters are plugins to SystemUIServer, and hence their CPU usage is counted into SystemUIServer's total CPU usage. To check MenuMeters CPU time use the console 'top' program or the Process Viewer application to check SystemUIServer's CPU usage. I recommend using 'top -s 60' to get a wider (and thus more accurate) sample. Note that all SystemUIServer plugins are counted in this total (clock, iSync, iChat, etc. etc.) so not just MenuMeters is responsible. To get an accurate read on MenuMeters alone turn off all the MenuMeters and check SystemUIServer's usage (typically about 1-2% spiking to 5%) then turn on the MenuMeters you use and check SystemUIServer again.

By its nature MenuMeters must poll the system periodically to gather data. This process uses a moderate amount of CPU time, and the actual process of drawing the graphics uses a lot more. In fairness MenuMeters at its default settings uses about the same CPU time on my development machine (PowerBook G4 800) than the four utilities it replaced (and it does more). I expect that on most machines MenuMeters will add about 1-2% more CPU usage to SystemUIServer on average, with occasional spikes as much as 5-10%. Using a wider sample size in top will help to give a more general average so the spikes may not be visible.

Here are some things you can do to reduce the CPU usage of MenuMeters:
•	Turn off meters you don't use.
•	Increase the time between updates. This will significantly improve performance, at the cost of the "live" view of the system. However, the statistics gathered by MenuMeters are cumulative, meaning that slower updates does not result in lost information.
•	Turn off text displays. MacOS X's beautiful text comes at a fairly high cost (with or without antialiasing). Rendering the memory and network text displays can dramatically increase MenuMeter's CPU usage compare to just displaying the graphs. The exception to this rule is the CPU percentage display, which, because it covers a limited range (0% - 100%), allows me to prerender all text.

Q:	The Net Meter shows interfaces I never use. How do I disable them?

A:	Network interfaces are reported on the basis of the SystemConfiguration framework. To prevent interfaces from showing in the list you must disable the interface in the Apple Network preference panel using the "Network Port Configurations" menu item.

Q:	Open source?

A:	MenuMeters is released under the GNU General Public License (GPL). This makes it both "free" as in beer and "free" as in speech, for those who partition the world using that terminology (I am not one of them). MenuMeters is open source mostly because there isn't a good reason for it not to be, except, perhaps, saving myself the embarrassment of having others look at my first C code in a long time.

Although it uses none of their code directly, MenuMeters wouldn't exist without the projects of others released as open source under a variety of licenses like the GPL, APSL, and Artistic License (see "Thanks" section of the MenuMeters Read Me for some credits).